'''
1. 字符串的定义
    字符串是由零个或多个字符组成的有限序列。
    一般记为：s = "a1a2……an"(n>=0)
    其中，s是字符串名，用双引号或单引号括起来的字符序列是字符串常量。
    双引号和单引号作用相同。
2.字符串的常用方法：
    len(s)：返回字符串s的长度。
    str(s)：将s转换为一个字符串。
 
    s.upper()：将字符串s中的小写字母转换为大写字母。
    s.lower()：将字符串s中的大写字母转换为小写字母。
    s.capitalize()：将字符串s的第一个字符转换为大写字母，其余字符转换为小写字母。
    s.title()：将字符串s中的每个单词的第一个字符转换为大写字母，其余字符转换为小写字母。
    s.strip()：去掉字符串s中开头和结尾处的空白字符。
    
    s.lstrip()：去掉字符串s中开头处的空白字符。
    s.rstrip()：去掉字符串s中结尾处的空白字符。
    s.replace(old, new)：将字符串s中的old替换为new。
    s.split(sep)：按照指定的分隔符sep将字符串s分割成一个列表。
    s.join(iterable)：将可迭代对象iterable中的元素连接成一个字符串，元素之间用指定的分隔符sep分隔。
    s.find(sub)：返回字符串s中第一次出现子字符串sub的位置，如果没有找到则返回-1。
    s.rfind(sub)：返回字符串s中最后一次出现子字符串sub的位置，如果没有找到则返回-1。
    s.count(sub)：返回字符串s中出现子字符串sub的次数。
    s.startswith(prefix)：判断字符串s是否以指定的前缀prefix开头。
    s.endswith(suffix)：判断字符串s是否以指定的后缀suffix结尾。
    s.isdigit()：判断字符串s是否只包含数字字符。
    s.isalpha()：判断字符串s是否只包含字母字符。
    s.isalnum()：判断字符串s是否只包含字母和数字字符。
    s.isspace()：判断字符串s是否只包含空白字符。
    s.islower()：判断字符串s是否所有字符都是小写字母。
    s.isupper()：判断字符串s是否所有字符都是大写字母。
    s.istitle()：判断字符串s是否符合标题化的格式。
    s.isdecimal()：判断字符串s是否只包含十进制数字字符。
    s.isnumeric()：判断字符串s是否只包含数字字符，包括Unicode数字字符。
    s.isidentifier()：判断字符串s是否是一个有效的标识符。
    s.isprintable()：判断字符串s是否只包含可打印字符。
    s.isascii()：判断字符串s是否只包含ASCII字符。
    

'''

#1.定义字符串
s1 = "hello"
s2 = 'world'
print(s1,type(s1))
print(s2,type(s2))

#2.获取字符串中的字符
print(s1[0],type(s1[0]))

#3.遍历字符串
for i in s1:
    print(i,end="\t")
    
    """
    字符串常见操作
    
    """
    
    #1.字符串的判断
    #1.1.判断字符串是否都是字母isalpha()
    s1 = "hello"
    s2 = 'world'
    s3 = "hello123"
    s4 = "hello world"
    print(f"s1是否是字母：{s1.isalpha()}") #True
    print(s2.isalpha()) #True
    print(s3.isalpha()) #False
    print(s4.isalpha()) #False
    #1.2.判断字符串是否都是数字isdigit()
    s7 = "123"
    s8 = "123.45"
    print(f"s7是否是数字：{s7.isdigit()}") #True
    print(s8.isdigit()) #False
    #1.3判断字符串是以什么开头
    s9 = "hello"
    print(f"s9是否是以he开头：{s9.startswith('he')}") #True
    print(s9.startswith('ll')) #False
    
    #1.4判断字符串是以什么结尾
    s10 = "hello"
    print(f"s10是否是以lo结尾：{s10.endswith('lo')}") #True
    print(s10.endswith('ll')) #False
    
    #==================查找和替换字符串================== 
    #2.查找字符串
    #2.1查找字符串第一次出现的位置find(没有就返回-1),refind()方法和find()方法类似，但是从右往左查找
    s11 = "hello world"
    print(f"s11中o第一次出现的位置：{s11.find('o')}")
    #2.2查找字符串最后一次出现的位置(没有就返回-1)
    print(f"s11中o最后一次出现的位置：{s11.rfind('o')}")
    
    #3.替换字符串
    #3.1替换字符串中的某个字符replace()方法:将返回一个新字符串，原字符串不变
    s12 = "hello world"
    s12.replace('o','O')
    print(f"s12中的o替换成O：{s12}")#hello world
    #replaces()方法返回一个新的字符串，原字符串不变,需要用变量接收
    ss=s12.replace('o','O')
    print(f"s12中的o替换成O：{ss}")#hellO wOrld
    
    #4.字符串的分割
    #4.1切片
    s13 = "hello#world#python#java"
    SSSS=s13.split('#')#以井号分割
    print(f"s13分割后的结果：{SSSS}")#['hello', 'world', 'python', 'java']
    
    #5.字符串去除空格和特殊字符
    # strip()方法:去除字符串中的空格，返回一个新的字符串，原字符串不变,需要用变量接收
    # lstrip()方法:去除字符串中的左边空格，返回一个新的字符串，原字符串不变,需要用变量接收
    # rstrip()方法:去除字符串中的右边空格，返回一个新的字符串，原字符串不变,需要用变量接收
    
    s14 = " hello world "
    ss11=s14.strip()#去除空格
    print(f"s14去除空格后的结果：{ss11}")#去除字符串前后空格
    
    s15 = " hello world "
    ss12=s15.lstrip()#去除左边空格
    print(f"s15去除左边空格后的结果：{ss12}")#去除字符串左边空格

    s16 = " hello world "
    ss13=s16.rstrip()#去除右边空格
    print(f"s16去除右边空格后的结果：{ss13}")#去除字符串右边空格
    
    #5.1 去除字符串中的特殊字符
    # strip()方法:去除字符串中的特殊字符，返回一个新的字符串，原字符串不变,需要用变量接收
    # lstrip()方法:去除字符串中的左边特殊字符，返回一个新的字符串，原字符串不变,需要用变量接收
    # rstrip()方法:去除字符串中的右边特殊字符，返回一个新的字符串，原字符串不变,需要用变量接收  
    s17 = "ohello worldo"
    ss14=s17.strip('o')#去除o
    print(f"s17去除o后的结果：{ss14}")#去除字符串前后的o

   